﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmRegistrarCompra : Form, Interfaz
    {
        public frmRegistrarCompra()
        {
            InitializeComponent();
        }

        Temporal elTemporal = new Temporal();
        TemporalBL elTemporalBL = new TemporalBL();
        Transportista elTransportista = new Transportista();
        TransportistaBL elTransportistaBL = new TransportistaBL();
        EmpresaProvedor elProvedor = new EmpresaProvedor();
        EmpresaProvedorBL elProvedorBL = new EmpresaProvedorBL();
        Producto elProducto = new Producto();
        ProductoBL elProductoBL = new ProductoBL();
        RegistroCompra elRegistroCompra = new RegistroCompra();
        RegistroCompraBL elRegistroCompraBL = new RegistroCompraBL();
        Almacen elAlmacen = new Almacen();
        AlmacenBL elAlmacenBL = new AlmacenBL();
        List<Temporal> lista;
        Double impuesto, TasaCambio;
        Int32 CodRegCompra;
        String monedaVenta;
        DataSet dts = new DataSet();
        frmRegSerie formSerie;          
        //PARA REGISTRAR COMPRA
        private RegistroCompra ObtenerOjetoRegistroCompra()
        {
            elRegistroCompra.TipoComprobante = txtTipoComprob.Text;
            elRegistroCompra.NroRegCompra = txtSerieComprob.Text;
            elRegistroCompra.FecRegComprobante = dtpFecha.Text;
            if (cmbTipoMoneda.Text == "$")
            {
                elRegistroCompra.MonedaComprobante = "DOLARES";
            }
            else
            {
                elRegistroCompra.MonedaComprobante = "SOLES";
            }
            elRegistroCompra.TCambioComprobante = txtTCambioComprob.Text;
            elRegistroCompra.SubTotalComprobante = Convert.ToDouble(txtSubTotal.Text);
            elRegistroCompra.IGVComprobante = Convert.ToDouble(txtIGV.Text);
            elRegistroCompra.TotalComprobante = Convert.ToDouble(txtTotal.Text);
            elRegistroCompra.LaEmpreProv = Convert.ToInt32(cmbListaProvedores.SelectedValue);
            elRegistroCompra.ProvCiudad = cmbCiudad.Text;
            elRegistroCompra.ElTransportista = Convert.ToInt32(cmbTransportista.SelectedValue);
            elRegistroCompra.CostoTrans = Convert.ToDouble(txtCostoTrans.Text);
            return elRegistroCompra;
        }
        private Boolean GuardarRegistroCompra()
        {
            RegistroCompra elRegistroCompra = ObtenerOjetoRegistroCompra();
            CodRegCompra = elRegistroCompraBL.guardarRegistroCompra(elRegistroCompra);
            guardarHistorialAlmacen(); 
            return true;
        }
        //PARA ACTULIZAR REGISTRO COMPRA
        private Boolean ActualizarRegistroCompra()
        {
            RegistroCompra elRegistroCompra = ObtenerOjetoRegistroCompra();
            CodRegCompra = Convert.ToInt32(lblRegCompraID.Text);
            elRegistroCompraBL.ActualizarRegistroCompra(elRegistroCompra,CodRegCompra);
            ActualizarHistorialAlmacen();            
            return true;
        }
        //PARA REGISTRAR ENTRADA A ALMACEN
        private void guardarHistorialAlmacen()
        {
            for (int i = 0; i <= dgvDetalleCompra.Rows.Count - 1; i++)
            {
                guardarDetalleRegCompra(dtpFecha.Text, Convert.ToInt32(dgvDetalleCompra["cantidad", i].Value), Convert.ToDouble(dgvDetalleCompra["PrecCompra", i].Value), Convert.ToDouble(dgvDetalleCompra["Utilidad", i].Value), Convert.ToInt32(dgvDetalleCompra["CodProd", i].Value), Convert.ToInt32(CodRegCompra));
            }
            ActualizarAlmacen();
        }
        private Boolean guardarDetalleRegCompra(String fecReg, Int32 CantidadProdIng, Double PrecioCompraProd, Double Utilidad, Int32 ProductoID, Int32 RegCompraID)
        {
            elAlmacen.FecReg = fecReg;
            elAlmacen.CantidadProdIngresa = CantidadProdIng;
            elAlmacen.PrecioCompraProd = PrecioCompraProd;
            elAlmacen.Utilidad = Utilidad;
            elAlmacen.ElProducto = ProductoID;
            elAlmacen.ElRegCompra = RegCompraID;
            elAlmacenBL.guardarProductoHistorialAlmacen(elAlmacen);
            return true;
        }
        //PARA ACTUALIZAR ENTRADA ALMACEN
        private void ActualizarHistorialAlmacen()
        {
            for (int i = 0; i <= dgvDetalleCompra.Rows.Count - 1; i++)
            {
                ActualizarDetalleRegCompra(dtpFecha.Text, Convert.ToInt32(dgvDetalleCompra["cantidad", i].Value), Convert.ToDouble(dgvDetalleCompra["PrecCompra", i].Value), Convert.ToDouble(dgvDetalleCompra["Utilidad", i].Value), Convert.ToInt32(dgvDetalleCompra["CodProd", i].Value), Convert.ToInt32(CodRegCompra), Convert.ToInt32(dgvDetalleCompra["HistorialAlmacenID", i].Value));
            }
            ActualizarAlmacen();
        }
        private Boolean ActualizarDetalleRegCompra(String fecReg, Int32 CantidadProdIng, Double PrecioCompraProd, Double Utilidad, Int32 ProductoID, Int32 RegCompraID, Int32 CodHisAlmacen)
        {
            elAlmacen.FecReg = fecReg;
            elAlmacen.CantidadProdIngresa = CantidadProdIng;
            elAlmacen.PrecioCompraProd = PrecioCompraProd;
            elAlmacen.Utilidad = Utilidad;
            elAlmacen.ElProducto = ProductoID;
            elAlmacen.ElRegCompra = Convert.ToInt32(lblRegCompraID.Text); ;
            elAlmacenBL.ActualizarProductoHistorialAlmacen(elAlmacen, CodHisAlmacen);
            return true;
        }
        //PARA ELIMINAR ELEMENTOS DE LA LISTA
        private Boolean EliminarElementosLista()
        {
            if (dgvElementsDelete.Rows.Count > 0)
            {
                for (int i = 0; i <= dgvElementsDelete.Rows.Count - 1; i++)
                {
                    elAlmacenBL.QuitarProductoCompra(Convert.ToInt32(dgvElementsDelete["HAID", i].Value));
                }
            }
            ActualizarRegistroCompra();
            return true;
        }
        //PARA ACTUALIZAR STOCK
        private void ActualizarAlmacen()
        {
            for (int i = 0; i <= dgvDetalleCompra.Rows.Count - 1; i++)
            {
                guardarActualizacionAlmacen(Convert.ToDouble(dgvDetalleCompra["PrecioVenta", i].Value), Convert.ToInt32(dgvDetalleCompra["cantidad", i].Value), Convert.ToInt32(dgvDetalleCompra["CodProd", i].Value));
            }
            formSerie.GestionarSerie(CodRegCompra);
        }
        private Boolean guardarActualizacionAlmacen(Double PrecioVenta, Int32 CantidadIngresa, Int32 CodProducto)
        {
            if ((monedaVenta == "SOLES" && txtTCambioComprob.Text == "SOLES"))
                elAlmacen.PrecioVenta = PrecioVenta;
            if( (monedaVenta == "DOLARES" && txtTCambioComprob.Text != "SOLES"))
                elAlmacen.PrecioVenta = PrecioVenta;
            if (monedaVenta == "DOLARES" && txtTCambioComprob.Text == "SOLES")
                elAlmacen.PrecioVenta = PrecioVenta/TasaCambio;
            if (monedaVenta == "SOLES" && txtTCambioComprob.Text != "SOLES")
                elAlmacen.PrecioVenta = PrecioVenta * TasaCambio;
            elAlmacen.StockActual = CantidadIngresa;
            elAlmacen.ElProducto = CodProducto;
            elAlmacenBL.guardarProductoAlmacen(elAlmacen);
            return true;
        }
        //TRANSPORTISTA
        public void llenarComboTransportista()
        {
            if (cmbTransportista.DataSource == null)
            {
                cmbTransportista.DataSource = elTransportistaBL.ObtenerListaTransportista();
                cmbTransportista.DisplayMember = "RazonSocial";
                cmbTransportista.ValueMember = "TransportistaID";
                cmbTransportista.Text = "";
            }
        }
        //PROVEDOR
        public void llenarComboProvedor()
        {
            if (cmbListaProvedores.DataSource == null)
            {
                cmbListaProvedores.DataSource = elProvedorBL.ObtenerListaProvedor();
                cmbListaProvedores.DisplayMember = "RazonSocial";
                cmbListaProvedores.ValueMember = "EmpresaProvedorID";
                cmbListaProvedores.Text = "";
            }
        }
        //OBTENER IGV Y TIPO DE CAMBIO
        public void ObtenerTCambio()
        {
            lista = elTemporalBL.ObtenerActualesDatos();
            foreach (Temporal fila in lista)
            {
                this.txtTCambioComprob.Text = fila.TasaCambio.ToString();
                this.lblImpuesto.Text = fila.IGV.ToString() + " %";
                impuesto = fila.IGV;
                monedaVenta = fila.MonedaVentas.ToString();
                TasaCambio = fila.TasaCambio;
            }
        }
        public void ObtenerCostos()
        {
            Int32 i;
            Double total = 0, igv = 0, SubTotal = 0;
            try
            {
                for (i = 0; i <= dgvDetalleCompra.Rows.Count - 1; i++)
                {
                    total = total + (Convert.ToDouble(dgvDetalleCompra["PrecCompra", i].Value) * Convert.ToInt32(dgvDetalleCompra["Cantidad", i].Value));
                }
                SubTotal = total - (total * Convert.ToDouble(impuesto / 100));
                igv = total * (Convert.ToDouble(impuesto / 100));
                if (txtTipoComprob.Text == "FACTURA")
                {
                    txtSubTotal.Text = Convert.ToString(SubTotal);
                    txtIGV.Text = Convert.ToString(igv);
                    txtTotal.Text = Convert.ToString(total);
                }
                else if (txtTipoComprob.Text == "BOLETA")
                {
                    txtSubTotal.Text = "0.0";
                    txtIGV.Text = "0.0";
                    txtTotal.Text = Convert.ToString(total);
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void HabilitarNuevo()
        {
            try
            {
                cmbTipoMoneda.SelectedIndex = 0;
                groupBox2.Enabled = true;
                groupBox3.Enabled = true;
                groupBox4.Enabled = true;
                groupBox7.Enabled = true;
                btnRegistrar.Enabled = true;
                btnCancelar.Enabled = true;
                btnActualizar.Enabled = false;
                btnNuevo.Enabled = false;
                btnBuscar.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void DesabilitarNuevo()
        {
            try
            {
                txtTipoComprob.Text = "";
                txtSerieComprob.Text = "";
                cmbTipoMoneda.Text = "";
                cmbTipoMoneda.Text = "";
                txtTCambioComprob.Text = "";
                lblRegCompraID.Text = "";
                groupBox2.Enabled = false;
                groupBox3.Enabled = false;
                groupBox4.Enabled = false;
                groupBox7.Enabled = false;
                btnRegistrar.Enabled = false;
                btnCancelar.Enabled = false;
                btnActualizar.Enabled = false;
                btnNuevo.Enabled = true;
                btnBuscar.Enabled = true;
                cmbListaProvedores.DataSource = null;
                cmbTransportista.DataSource = null;
                cmbCiudad.Text = "";
                txtCostoTrans.Text = "";
                txtProducto.Text = "";
                txtCantIngreProd.Text = "";
                txtCostoCompra.Text = "";
                txtPrecioCompraFinal.Text = "";
                txtPrecioVenta.Text = "";
                btnActualizarProducto.Visible = false;
                btnCancelarUpdateProducto.Visible = false;
                btnAgregarProducto.Visible = true;
                formSerie.Close();
                cbMostrarListaSeries.Enabled = false;
                txtSubTotal.Text = "0.0";
                txtIGV.Text = "0.0";
                txtTotal.Text = "0.0";
                txtUtilidad.Text = "";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        private void LimpiarDatosProducto()
        {
            txtCantIngreProd.Text = "";
            txtCostoCompra.Text = "";
            txtUtilidad.Text = "";
            txtPrecioCompraFinal.Text = "";
            txtPrecioVenta.Text = "";
            lblNroFila.Text = "";
            txtProducto.Text = "";
        }

        private int ValidaDetalle(Int32 ProdID)
        {
            int res = 0;
            for (int i = 0; i <= dgvDetalleCompra.Rows.Count - 1; i++)
            {
                if (Convert.ToInt32(dgvDetalleCompra["CodProd", i].Value) == ProdID)
                {
                    //YA ESTA EN LA LISTA DE DETALLE 
                    res = 1;
                    break;
                }
            }
            return res;
        }
        public void ActivarMenu(bool Opcion)
        {
            throw new NotImplementedException();
        }
        public void CargarDatosCliente(string Nombre, string Ruc, string Direccion)
        {
            throw new NotImplementedException();
        }

        public void CargardatosProducto(string NomProd, string Cantidad, string PrecioVenta, string CodProd)
        {
            txtProducto.Text = NomProd;
            lblCodigoProducto.Text = CodProd;
            barraMenu.Visible = true;
            txtCantIngreProd.Select();
        }
        private void AgregarProductosLista() {
            String producto = txtProducto.Text;
            String cantidad = txtCantIngreProd.Text;
            String costoCompra = txtPrecioCompraFinal.Text;
            String MargenUtilidad = txtUtilidad.Text;
            String PrecioVenta = txtPrecioVenta.Text;
            String CostoTotal = Convert.ToString(Convert.ToInt32(cantidad) * Convert.ToDouble(costoCompra));
            if (txtTipoComprob.Text != "")
            {
                if (ValidaDetalle(Convert.ToInt32(lblCodigoProducto.Text)) == 0)
                {
                    dgvDetalleCompra.Rows.Add(producto, cantidad, costoCompra, MargenUtilidad, PrecioVenta, CostoTotal, Convert.ToInt32(lblCodigoProducto.Text));
                    ObtenerCostos();
                    AbrirFormularioSerie(txtCantIngreProd.Text);
                    barraMenu.Visible = false;
                }
                else
                {
                    MessageBox.Show("¡EL PRODUCTO YA ESTA EN LA LISTA!");
                    btnBuscarProducto.Select();
                }
            }
            else
            {
                MessageBox.Show("Ingrese Tipo de Comprobante");
                txtTipoComprob.Select();
            }
        }
        
        public void AbrirFormularioSerie(String Cantidad) {            
            formSerie.MdiParent = this.MdiParent;
            formSerie.txtProducto.Text = txtProducto.Text;
            formSerie.txtCantidad.Text = Cantidad;
            formSerie.lblCodigoProducto.Text = lblCodigoProducto.Text;
            formSerie.txtSerie.Enabled = true;
            formSerie.txtSerie.Select();
            LimpiarDatosProducto();
            formSerie.Show();
        }
        public void InstanciarFormSerie()
        {
            formSerie = new frmRegSerie();
            formSerie.LlenarDGV(Convert.ToInt32(lblRegCompraID.Text));
        }

        private void cmbTipoMoneda_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbTipoMoneda.SelectedItem.ToString() != "S/.")
            {
                txtTCambioComprob.Text = "";
                ObtenerTCambio();
                lblSimbolo.Text = "$";
                txtTCambioComprob.ReadOnly = false;
            }
            else
            {
                txtTCambioComprob.Text = "S/.";
                lblSimbolo.Text = "S/.";
                txtTCambioComprob.ReadOnly = true;
            }
            cmbListaProvedores.Select(); 
        }
        
        private void txtUtilidad_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtUtilidad.Text != "" && txtCostoCompra.Text != "")
                {
                    Double Costo = Convert.ToDouble(txtCostoCompra.Text);
                    if (cmbTipoMoneda.Text == "S/.")
                    {
                        lblPrecioProd.Text = "Prec. Compra S/.";
                        lblCambioMoneda.Text = "Prec. Vta. S/.";
                    }
                    else
                    {
                        lblPrecioProd.Text = "Prec. Compra $";
                        lblCambioMoneda.Text = "Prec. Vta. $";
                    }
                    txtPrecioCompraFinal.Text = String.Format("{0:F}",Costo);
                    txtPrecioVenta.Text = String.Format("{0:F}",Convert.ToDouble(txtCostoCompra.Text) + ((Convert.ToDouble(txtCostoCompra.Text) * (Convert.ToDouble(txtUtilidad.Text)) / 100)));
                }
                else
                {
                    txtPrecioCompraFinal.Text = "";
                    txtPrecioVenta.Text = "";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtCostoCompra_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtUtilidad.Text != "" && txtCostoCompra.Text != "")
                {
                    Double Costo = Convert.ToDouble(txtCostoCompra.Text);
                    if (cmbTipoMoneda.Text == "S/.")
                    {
                        lblPrecioProd.Text = "Prec. Compra S/.";
                        lblCambioMoneda.Text = "Prec. Vta. S/.";
                    }
                    else
                    {
                        lblPrecioProd.Text = "Prec. Compra $";
                        lblCambioMoneda.Text = "Prec. Vta. $";
                    }
                    txtPrecioCompraFinal.Text = String.Format("{0:F}",Costo);
                    txtPrecioVenta.Text = String.Format("{0:F}",Convert.ToDouble(txtCostoCompra.Text) + ((Convert.ToDouble(txtCostoCompra.Text) * (Convert.ToDouble(txtUtilidad.Text)) / 100)));
                }
                else
                {
                    txtPrecioCompraFinal.Text = "";
                    txtPrecioVenta.Text = "";
                }
            }
            catch (Exception ex) { MessageBox.Show("El mesnasaje es : " + ex.Message); }
        }

        private void dgvDetalleCompra_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex == dgvDetalleCompra.Columns["Eliminar"].Index)
                {
                    if (MessageBox.Show("ESTA SEGURO DE ELIMINAR EL PRODUCTO", "ELIMINAR PRODUCTO", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        dgvElementsDelete.Rows.Add(dgvDetalleCompra["HistorialAlmacenID", e.RowIndex].Value);
                        Int32 Cod = Convert.ToInt32(dgvDetalleCompra["CodProd", e.RowIndex].Value);
                        dgvDetalleCompra.Rows.Remove(dgvDetalleCompra.Rows[e.RowIndex]);
                        ObtenerCostos();
                        formSerie.EliminarSerieDeLaLista(Cod);
                    }                    
                }       
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnAgregarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtProducto.Text != "")
                {
                    AgregarProductosLista();
                    btnAgregarProducto.Select();
                    cbMostrarListaSeries.Enabled = true;
                }
                else
                    MessageBox.Show("Selecione un Producto");
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelarUpdateProducto_Click(object sender, EventArgs e)
        {
            LimpiarDatosProducto();
            btnAgregarProducto.Visible = true;
            btnActualizarProducto.Visible = false;
            btnCancelarUpdateProducto.Visible = false;
            dgvDetalleCompra.Enabled = true;
            barraMenu.Visible = false;
        }

        private void btnActualizarProducto_Click(object sender, EventArgs e)
        {
            Int32 filaUpdate = Convert.ToInt32(lblNroFila.Text);
            dgvDetalleCompra.Enabled = true;
            dgvDetalleCompra["Producto", filaUpdate].Value = txtProducto.Text;
            dgvDetalleCompra["cantidad", filaUpdate].Value = txtCantIngreProd.Text;
            dgvDetalleCompra["PrecCompra", filaUpdate].Value = txtCostoCompra.Text;
            dgvDetalleCompra["Utilidad", filaUpdate].Value = txtUtilidad.Text;
            dgvDetalleCompra["PrecioVenta", filaUpdate].Value = txtPrecioVenta.Text;
            dgvDetalleCompra["CodProd", filaUpdate].Value = Convert.ToString(lblCodigoProducto.Text);
            ObtenerCostos();
            ValidadCantidad();
            barraMenu.Visible = false;
            LimpiarDatosProducto();
            btnBuscarProducto.Select();
        }
        private void ValidadCantidad() {
            Int32 CanUpdate = Convert.ToInt32(txtCantIngreProd.Text);
            Int32 CanActual = formSerie.CantidadProducto(Convert.ToInt32(lblCodigoProducto.Text));
            if (CanUpdate > CanActual) {
                AbrirFormularioSerie(Convert.ToString(CanUpdate-CanActual));
            }
            if (CanUpdate < CanActual) {
                if (MessageBox.Show("EL NRO DE SERIES REGISTRADAS ES MAYOR AL QUE SE ESTA INGRESANDO\n\t¿DESEA ELIMINAR SERIES?", "ELIMINAR SERIE ADICIONAL", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {                    
                    AbrirFormularioSerie("0");
                } 
            }
        }
        private void dgvDetalleCompra_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex != dgvDetalleCompra.Columns["Eliminar"].Index)
                {
                    Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                    this.lblNroFila.Text = Convert.ToString(nroFila);
                    this.txtProducto.Text = Convert.ToString(dgvDetalleCompra["Producto",nroFila].Value);
                    this.lblCodigoProducto.Text = Convert.ToString(dgvDetalleCompra["CodProd", nroFila].Value);
                    this.txtCantIngreProd.Text = Convert.ToString(dgvDetalleCompra["cantidad", nroFila].Value);
                    this.txtCostoCompra.Text = Convert.ToString(dgvDetalleCompra["PrecCompra", nroFila].Value);
                    this.txtUtilidad.Text = Convert.ToString(dgvDetalleCompra["Utilidad", nroFila].Value);
                    this.txtPrecioCompraFinal.Text = Convert.ToString(dgvDetalleCompra["PrecCompra", nroFila].Value);
                    this.txtPrecioVenta.Text = Convert.ToString(dgvDetalleCompra["PrecioVenta", nroFila].Value);
                    btnAgregarProducto.Visible = false;
                    btnActualizarProducto.Visible = true;
                    btnCancelarUpdateProducto.Visible = true;
                    barraMenu.Visible = true;
                    dgvDetalleCompra.Enabled = false;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                HabilitarNuevo();
                txtTipoComprob.Select();
                ObtenerTCambio();
                llenarComboTransportista();
                llenarComboProvedor();
                formSerie = new frmRegSerie();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            frmBuscarRegCompra formRegCompra = new frmBuscarRegCompra();
            formRegCompra.MdiParent = this.MdiParent;
            formRegCompra.btnRegresar.Visible = true;
            formRegCompra.btnCancelar.Visible = false;
            formRegCompra.Show();
            this.Close();
        }

        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            try
            {
                GuardarRegistroCompra();     
                MessageBox.Show("REGISTRO DE COMPRA REGISTRADO CORRECTAMENTE");
                DesabilitarNuevo();
                dgvDetalleCompra.Rows.Clear();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            try
            {
                EliminarElementosLista();                
                MessageBox.Show("REGISTRO DE COMPRA ACTUALIZADO CORRECTAMENTE");
                DesabilitarNuevo();
                dgvDetalleCompra.Rows.Clear();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                DesabilitarNuevo();
                dgvDetalleCompra.Rows.Clear();
                dgvElementsDelete.Rows.Clear();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnBuscarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                frmProductoRegistrado formBusProd = new frmProductoRegistrado();
                formBusProd.MdiParent = this.MdiParent;
                formBusProd.Manipular = this;
                formBusProd.Show();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }        
        private void txtTipoComprob_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.KeyCode == Keys.Enter && txtPrecioCompraFinal.Text != "" && txtPrecioVenta.Text != "")
                {
                    AgregarProductosLista();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cbMostrarListaSeries_CheckedChanged(object sender, EventArgs e)
        {
            if (cbMostrarListaSeries.Checked == true) {
                AbrirFormularioSerie("0");                
                cbMostrarListaSeries.Checked = false;
            }
        }       
    }
}
